home *** CD-ROM | disk | FTP | other *** search
- INTEGER*4 FUNCTION VOCAB(ID,INIT)
-
- C LOOK UP ID IN THE VOCABULARY (ATAB) AND RETURN ITS "DEFINITION" (KTAB), OR
- C -1 IF NOT FOUND. IF INIT IS POSITIVE, THIS IS AN INITIALISATION CALL SETTING
- C UP A KEYWORD VARIABLE, AND NOT FINDING IT CONSTITUTES A BUG. IT ALSO MEANS
- C THAT ONLY KTAB VALUES WHICH TAKEN OVER 1000 EQUAL INIT MAY BE CONSIDERED.
- C (THUS "STEPS", WHICH IS A MOTION VERB AS WELL AS AN OBJECT, MAY BE LOCATED
- C AS AN OBJECT.) AND IT ALSO MEANS THE KTAB VALUE IS TAKEN MOD 1000.
-
- IMPLICIT INTEGER*4 (A-Z)
- C INTEGER*2 KTAB,ASCVAR
- COMMON /VOCCOM/KTAB,ATAB,TABSIZ
- DIMENSION KTAB(300),ATAB(300)
-
- HASH=ID
- DO 1 I=1,TABSIZ
- IF(KTAB(I).EQ.-1) GOTO 2
- IF(INIT.GE.0.AND.KTAB(I)/1000.NE.INIT) GOTO 1
- IF(ATAB(I).EQ.HASH) GOTO 3
- 1 CONTINUE
- CALL BUG(21)
-
- 2 VOCAB=-1
- IF(INIT.LT.0) RETURN
- WRITE(*,100) HASH
- 100 FORMAT(' KEYWORD = ',A4)
- CALL BUG(5)
-
- 3 VOCAB=KTAB(I)
- IF(INIT.GE.0) VOCAB=MOD(VOCAB,1000)
- RETURN
- END
-